home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
basic
/
svgaqb21.zip
/
SVGAMOD2.BAS
< prev
next >
Wrap
BASIC Source File
|
1994-05-09
|
38KB
|
1,229 lines
'****************************************************************************
'*
'* 'SVGAQB' & 'SVGAPV' A Super VGA Graphics Librarys for use with
'* MS QuickBASIC 4.X and MS PDS/VBDOS
'* Copyright 1993-1994 by Stephen L. Balkum and Daniel A. Sill
'*
'* MS, QuickBASIC, PDS, and VBDOS are registered trademarks of
'* Microsoft Corporation. GIF and 'Graphics Interchange Format' are
'* trademarks (TM) ofCompuServe, Incorporated, an H&R Block Company.
'*
'* **************** UNREGISTERED SHAREWARE VERSION **********************
'* * FOR EVALUATION ONLY. NOT FOR RESALE IN ANY FORM. SOFTWARE WRITTEN *
'* * USING THIS UNREGISTERED SHAREWARE GRAPHICS LIBRARY MAY NOT BY SOLD *
'* * OR USED FOR ANY PURPOSE OTHER THAN THE EVALUATION OF THIS LIBRARY. *
'* **********************************************************************
'*
'* **************** NO WARRANTIES AND NO LIABILITY **********************
'* * Stephen L. Balkum and Daniel A. Sill provide no warranties, either *
'* * expressed or implied, of merchant ability, or fitness, for a *
'* * particular use or purpose of this SOFTWARE and documentation. *
'* * In no event shall Stephen L. Balkum or Daniel A. Sill be held *
'* * liable for any damages resulting from the use or misuse of the *
'* * SOFTWARE and documentation. *
'* **********************************************************************
'*
'* ************** U.S. GOVERNMENT RESTRICTED RIGHTS *********************
'* * Use, duplication, or disclosure of the SOFTWARE and documentation *
'* * by the U.S. Government is subject to the restrictions as set forth *
'* * in subparagraph (c)(1)(ii) of the Rights in Technical Data and *
'* * Computer Software clause at DFARS 252.227-7013. *
'* * Contractor/manufacturer is Stephen L. Balkum and Daniel A. Sill, *
'* * P.O. Box 7704, Austin, Texas 78713-7704 *
'* **********************************************************************
'*
'* **********************************************************************
'* * By using this SOFTWARE or documentation, you agree to the above *
'* * terms and conditions. *
'* **********************************************************************
'*
'****************************************************************************
REM $INCLUDE: 'SVGABC.BI'
REM $INCLUDE: 'SVGADEMO.BI'
REM $DYNAMIC
SUB DO2D (RET$)
DIM POINTARRY(0 TO 8) AS P2DType
'*************************************************************************
'* SET UP THE TITLE
'*************************************************************************
TITLE$ = "DEMO 11: 2D functions"
PALSET PAL, 0, 255
'*************************************************************************
'* SET UP THE 'STAR' PATTERN OF POINTS
'*************************************************************************
SETVIEW 0, 0, GETMAXX, GETMAXY
CNTX = GETMAXX \ 2
CNTY = ((GETMAXY - 32) \ 2) + 32
SPCNG = GETMAXX \ 30
POINTARRY(0).X = 0
POINTARRY(0).Y = -SPCNG * 6
POINTARRY(1).X = SPCNG * 2
POINTARRY(1).Y = -SPCNG * 2
POINTARRY(2).X = SPCNG * 6
POINTARRY(2).Y = 0
POINTARRY(3).X = SPCNG * 2
POINTARRY(3).Y = SPCNG * 2
POINTARRY(4).X = 0
POINTARRY(4).Y = SPCNG * 6
POINTARRY(5).X = -SPCNG * 2
POINTARRY(5).Y = SPCNG * 2
POINTARRY(6).X = -SPCNG * 6
POINTARRY(6).Y = 0
POINTARRY(7).X = -SPCNG * 2
POINTARRY(7).Y = -SPCNG * 2
POINTARRY(8).X = 0
POINTARRY(8).Y = -SPCNG * 6
'*************************************************************************
'* SHOW D2TRANSLATE
'*************************************************************************
FILLSCREEN 0
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "D2TRANSLATE (Points,XTrans,YTrans,InAry,OutAry)"
DRWSTRING 1, 7, 0, A$, 10, 16
SETVIEW 0, 32, GETMAXX, GETMAXY
D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN 0
SETVIEW 0, 0, GETMAXX, GETMAXY
EXIT SUB
END IF
XTRANS = 0
YTRANS = 0
FOR J = 0 TO SPCNG * 2
XTRANS = XTRANS + 2
YTRANS = YTRANS + 2
D2TRANSLATE 9, CNTX + XTRANS, CNTY + YTRANS, POINTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
FOR J = 0 TO SPCNG * 2
XTRANS = XTRANS - 2
YTRANS = YTRANS - 2
D2TRANSLATE 9, CNTX + XTRANS, CNTY + YTRANS, POINTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN 0
SETVIEW 0, 0, GETMAXX, GETMAXY
EXIT SUB
END IF
'*************************************************************************
'* SHOW D2SCALE
'*************************************************************************
SETVIEW 0, 0, GETMAXX, 31
FILLVIEW (0)
SETVIEW 0, 0, GETMAXX, GETMAXY
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "D2SCALE (Points,XScale,YScale,InAry,OutAry)"
DRWSTRING 1, 7, 0, A$, 10, 16
SETVIEW 0, 32, GETMAXX, GETMAXY
D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
FOR J = 256 TO 380 STEP 4
D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
X = J
FOR J = X TO 256 STEP -4
D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
X = J
FOR J = X TO 128 STEP -4
D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
X = J
FOR J = X TO 256 STEP 4
D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN 0
SETVIEW 0, 0, GETMAXX, GETMAXY
EXIT SUB
END IF
'*************************************************************************
'* SHOW D2ROTATE (ABOUT THE CENTER OF THE OBJECT)
'*************************************************************************
SETVIEW 0, 0, GETMAXX, 31
FILLVIEW (0)
SETVIEW 0, 0, GETMAXX, GETMAXY
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "D2ROTATE (Points,XOrigin,YOrigin,Angle,InAry,OutAry)"
DRWSTRING 1, 7, 0, A$, 10, 16
A$ = "Lets do it about the center of the object."
DRWSTRING 1, 7, 0, A$, 10, 32
SETVIEW 0, 32, GETMAXX, GETMAXY
D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
FOR J = 0 TO 180
D2ROTATE 9, 0, 0, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
FOR J = 180 TO 0 STEP -2
D2ROTATE 9, 0, 0, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN 0
SETVIEW 0, 0, GETMAXX, GETMAXY
EXIT SUB
END IF
'*************************************************************************
'* SHOW D2ROTATE (ABOUT AN ARBITRARY POINT)
'*************************************************************************
SETVIEW 0, 0, GETMAXX, 48
FILLVIEW (0)
SETVIEW 0, 0, GETMAXX, GETMAXY
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "D2ROTATE (Points,XOrigin,YOrigin,Angle,InAry,OutAry)"
DRWSTRING 1, 7, 0, A$, 10, 16
A$ = "Lets do it about an arbitrary point."
DRWSTRING 1, 7, 0, A$, 10, 32
SETVIEW 0, 32, GETMAXX, GETMAXY
D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
FOR J = 0 TO 360 STEP 2
D2ROTATE 9, 0, SPCNG * 6, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
SETVIEW 0, 0, GETMAXX, GETMAXY
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN 0
EXIT SUB
END IF
END SUB
SUB DO3D (RET$)
'*************************************************************************
'* SET UP THE TITLE
'********************************